{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "03bd465c",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import math\n",
    "import random \n",
    "import time"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6d5d67cd",
   "metadata": {},
   "source": [
    "数据预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "cdff2203",
   "metadata": {},
   "outputs": [],
   "source": [
    "df=pd.read_csv('E:/推荐系统/数据集/MovieLens/ml-latest/ratings.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "c5b04c90",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "用时：10.192579秒\n"
     ]
    }
   ],
   "source": [
    "#划分训练集测试集\n",
    "'''\n",
    "users_number表示选择的用户数量，train_percent表示训练集比例\n",
    "'''\n",
    "start=time.time()\n",
    "N=0\n",
    "users_number=500\n",
    "training_percent=0.9\n",
    "train=pd.DataFrame(columns=list(df))\n",
    "test=pd.DataFrame(columns=list(df))\n",
    "for user,result in df.groupby('userId'):\n",
    "    result=result.reset_index(drop=True)\n",
    "    time_lst=list(result['timestamp'])\n",
    "    index_train=np.argsort(time_lst)[:int(len(time_lst)*training_percent)]\n",
    "    index_test=np.argsort(time_lst)[int(len(time_lst)*training_percent)+1:]\n",
    "    train=pd.concat([train,result.iloc[index_train]])\n",
    "    test=pd.concat([test,result.iloc[index_test]])\n",
    "    N+=1\n",
    "    if N>users_number:\n",
    "        break\n",
    "train=train.reset_index(drop=True)\n",
    "test=test.reset_index(drop=True)\n",
    "end=time.time()\n",
    "print(\"用时：%f秒\"%(end-start))\n",
    "train['istest']=0\n",
    "test['istest']=1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "ba74074a",
   "metadata": {},
   "outputs": [],
   "source": [
    "test=pd.read_csv('E:/推荐系统/数据集/MovieLens/ml-latest/中间量/评分预测问题_1千用户_test.csv')\n",
    "train=pd.read_csv('E:/推荐系统/数据集/MovieLens/ml-latest/中间量/评分预测问题_1千用户_train.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "7cace429",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "数据集中的电影部数：53889\n",
      "数据集中的用户数：283228\n",
      "训练集中的电影部数：7049\n",
      "训练集中的用户数：486\n"
     ]
    }
   ],
   "source": [
    "print(\"数据集中的电影部数：%d\"%len(df['movieId'].unique()))\n",
    "print(\"数据集中的用户数：%d\"%len(df['userId'].unique()))\n",
    "print(\"训练集中的电影部数：%d\"%len(train['movieId'].unique()))\n",
    "print(\"训练集中的用户数：%d\"%len(train['userId'].unique()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "fa71aa5b",
   "metadata": {},
   "outputs": [],
   "source": [
    "'''\n",
    "record：训练集+测试集。\n",
    "'''\n",
    "record=pd.concat([train,test])\n",
    "record=record.reset_index(drop=True)\n",
    "record['pre']=0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e46d334e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>userId</th>\n",
       "      <th>movieId</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "      <th>istest</th>\n",
       "      <th>pre</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>3826</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1256677210</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>307</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1256677221</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>1590</td>\n",
       "      <td>2.5</td>\n",
       "      <td>1256677236</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>2478</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1256677239</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>3698</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1256677243</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>94978</th>\n",
       "      <td>1000</td>\n",
       "      <td>102993</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1516313264</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>94979</th>\n",
       "      <td>1000</td>\n",
       "      <td>159717</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1516313279</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>94980</th>\n",
       "      <td>1000</td>\n",
       "      <td>89864</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1516313291</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>94981</th>\n",
       "      <td>1000</td>\n",
       "      <td>73860</td>\n",
       "      <td>4.5</td>\n",
       "      <td>1516313299</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>94982</th>\n",
       "      <td>1000</td>\n",
       "      <td>109374</td>\n",
       "      <td>2.5</td>\n",
       "      <td>1534443939</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>94983 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       userId  movieId  rating   timestamp  istest  pre\n",
       "0           1     3826     2.0  1256677210       0    0\n",
       "1           1      307     3.5  1256677221       0    0\n",
       "2           1     1590     2.5  1256677236       0    0\n",
       "3           1     2478     4.0  1256677239       0    0\n",
       "4           1     3698     3.5  1256677243       0    0\n",
       "...       ...      ...     ...         ...     ...  ...\n",
       "94978    1000   102993     4.0  1516313264       1    0\n",
       "94979    1000   159717     4.0  1516313279       1    0\n",
       "94980    1000    89864     3.5  1516313291       1    0\n",
       "94981    1000    73860     4.5  1516313299       1    0\n",
       "94982    1000   109374     2.5  1534443939       1    0\n",
       "\n",
       "[94983 rows x 6 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "record"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dbac3903",
   "metadata": {},
   "source": [
    "定义需要函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "44c7a2fe",
   "metadata": {},
   "outputs": [],
   "source": [
    "#初始化P,Q,B_user，B_item向量\n",
    "def InitializePQ(F,all_users_set,all_items_set):\n",
    "    P={user:np.random.randn(F) for user in all_users_set}\n",
    "    Q={item:np.random.randn(F) for item in all_items_set}\n",
    "    B_user={user:0 for user in all_users_set}\n",
    "    B_item={item:0 for item in all_items_set}\n",
    "    y={item:np.random.randn(F) for item in all_items_set}\n",
    "    return P,Q,B_user,B_item,y\n",
    "\n",
    "#得到rui的预测值\n",
    "def Predict(P_user,Q_item,bu,bi,u,y,interacted_items):\n",
    "    '''\n",
    "    P_user:user对应P矩阵中的向量\n",
    "    Q_item:item对应Q矩阵中的向量\n",
    "    bu:用户u的偏置\n",
    "    bi:物品i的偏置\n",
    "    u:全局平均评分\n",
    "    '''\n",
    "    F = len(P_user)\n",
    "    y_sum = np.zeros(F)\n",
    "    y_sum = y_sum.reshape(Q_item.shape)\n",
    "    for item in interacted_items:\n",
    "        y_sum += y[item]\n",
    "    return np.multiply( P_user,Q_item ).sum() + bi + bu + u + (np.multiply( Q_item, y_sum).sum())/np.sqrt(len(interacted_items))\n",
    "\n",
    "#评价指标\n",
    "def rmse(rating1,rating2):\n",
    "    #rating2为实际评分，rating1为预测\n",
    "    return (np.sum((rating1 - rating2) ** 2) / len(rating2))**0.5\n",
    "def mae(rating1,rating2):\n",
    "    return abs(np.sum((rating1 - rating2)) / len(rating2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "ce87049d",
   "metadata": {},
   "outputs": [],
   "source": [
    "def validation_predct(validation,P,Q,B_user,B_item,u,y,interacted_items):\n",
    "    '''\n",
    "    '''\n",
    "    pre_list=[]\n",
    "    true_rating_list=[]\n",
    "    validation_loss=0\n",
    "    \n",
    "    for index,r in validation.groupby(validation.index):\n",
    "        userId=int(r['userId'].values[0])\n",
    "        movieId=int(r['movieId'].values[0])\n",
    "        if (userId not in P)|(movieId not in Q):\n",
    "            continue\n",
    "        else:\n",
    "            \n",
    "            pre_list.append(Predict(P[userId],Q[movieId],B_user[userId],B_item[movieId],u,y,interacted_items))\n",
    "            true_rating_list.append(r['rating'].values[0])\n",
    "            \n",
    "    pre=np.array(pre_list)\n",
    "    true=np.array(true_rating_list)\n",
    "    validation_loss = sum((pre-true)**2)/len(true)\n",
    "    \n",
    "    return validation_loss, rmse(pre,true),mae(pre,true) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "id": "54cd2966",
   "metadata": {},
   "outputs": [],
   "source": [
    "#梯度下降法计算P，Q，B_user,B_item\n",
    "def LatentFactorModel(train,F,alpha,lambda_,steps):\n",
    "    '''\n",
    "    F:隐特征个数\n",
    "    alpha：学习率\n",
    "    lambda_：正则项系数\n",
    "    steps：迭代总次数\n",
    "    all_users_set：训练集所有用户集合\n",
    "    all_items_set：训练集所有物品集合\n",
    "    all_items：训练集所有物品列表，包括重复交互\n",
    "    u：全局评分均值\n",
    "    '''\n",
    "    all_users_set=set(train['userId'])\n",
    "    all_items_set=set(train['movieId'])\n",
    "    P,Q,B_user,B_item,y=InitializePQ(F,all_users_set,all_items_set)\n",
    "    all_items=list(train['movieId'])\n",
    "    u=np.mean(train['rating'])\n",
    "    \n",
    "    train_ = train.drop(index=list((train.sample(frac=0.05,replace=False,random_state=1).index)))\n",
    "    validation = train.sample(frac=0.05,replace=False,random_state=1)\n",
    "    \n",
    "    train_rmse_lst=[]\n",
    "    validation_rmse_lst=[]\n",
    "    train_mae_lst=[]\n",
    "    validation_mae_lst=[] \n",
    "    \n",
    "    rmse_temp=1000\n",
    "    for step in range(0,steps):\n",
    "        train_loss=0\n",
    "        for user, result in train_.groupby('userId'): #随机梯度下降          \n",
    "            result=result.reset_index(drop=True)\n",
    "            result=result[['movieId','rating']]\n",
    "            \n",
    "            interacted_items=set(result['movieId'])\n",
    "            \n",
    "            z = P[user]\n",
    "            for item in interacted_items:\n",
    "                z += y[item]/np.sqrt(len(interacted_items))\n",
    "                \n",
    "            for index in range(result.shape[0]):                              #随机梯度下降方法，每次拿出一个样本和样本标签来更新P和Q中对应的参数\n",
    "                item = result.iloc[index]['movieId']\n",
    "                rui = result.iloc[index]['rating']\n",
    "                eui = rui - Predict(P[user],Q[item],B_user[user],B_item[item],u,y,interacted_items)\n",
    "                train_loss += eui**2\n",
    "                \n",
    "                \n",
    "                #更新参数\n",
    "                P[user] += alpha*( eui*Q[item]-lambda_*P[user] )            #向量化加速\n",
    "                \n",
    "                Q[item] += alpha*( z - lambda_*Q[item] )\n",
    "                B_user[user] += alpha*(eui - lambda_*B_user[user])\n",
    "                B_item[item] += alpha*(eui - lambda_*B_item[item]) \n",
    "                \n",
    "                for itemj in interacted_items:\n",
    "                    y[itemj] += alpha*(eui*Q[item]/np.sqrt(len(interacted_items)) - lambda_*y[itemj])\n",
    "                \n",
    "                \n",
    "        validation_loss,rmse_validation,mae_validation=validation_predct(validation,P,Q,B_user,B_item,u,y,interacted_items)\n",
    "        \n",
    "        print(\"第%d步训练集损失为：%f\"%(step+1,train_loss/train_.shape[0]))\n",
    "        print(\"第%d步验证集损失为：%f\"%(step+1,validation_loss))\n",
    "        print(\"第%d步验证集rmse为：%f\"%(step+1,rmse_validation))\n",
    "        print(\"第%d步验证集mae为：%f\"%(step+1,mae_validation))\n",
    "        \n",
    "        if alpha<=0.001:\n",
    "            continue\n",
    "        else:  \n",
    "            alpha*=0.99                                                        #学习率衰减\n",
    "            \n",
    "        if rmse_temp<rmse_validation:\n",
    "            break\n",
    "        else:\n",
    "            rmse_temp = rmse_validation\n",
    "\n",
    "            \n",
    "        train_loss, rmse_train, mae_train = validation_predct(train_,P,Q,B_user,B_item,u,y,interacted_items)\n",
    "    \n",
    "        train_rmse_lst.append(rmse_train)\n",
    "        validation_rmse_lst.append(rmse_validation)\n",
    "        train_mae_lst.append(mae_train)\n",
    "        validation_mae_lst.append(mae_validation)\n",
    "        \n",
    "    return P,Q,B_user,B_item,u,y,train_rmse_lst,validation_rmse_lst,train_mae_lst,validation_mae_lst\n",
    "  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "9dee00ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "#利用训练好的结果对测试集预测\n",
    "def test_predict(record,train,P,Q,B_user,B_item,u,y):\n",
    "    start=time.time()\n",
    "    \n",
    "    #其实只预测测试集中的评分即可，不需要预测训练集的评分。但这里对record中每一条行为数据都做出了一个评分。\n",
    "    for index,r in record.groupby(record.index):\n",
    "        userId=int(r['userId'].values[0])\n",
    "        movieId=int(r['movieId'].values[0])\n",
    "        interacted_items=set(train[train['userId']==userId]['movieId'])\n",
    "        if userId not in P:\n",
    "            print(\"无法对用户%d关于电影的评分%d做出预测，因为训练集中没有该用户数据\"%(userId,movieId))\n",
    "            continue\n",
    "        if movieId not in Q:\n",
    "            print(\"无法对用户%d关于电影的评分%d做出预测，因为训练集中没有该物品数据\"%(userId,movieId))\n",
    "            continue\n",
    "        record.loc[index,'pre']=Predict(P[userId],Q[movieId],B_user[userId],B_item[movieId],u,y,interacted_items)\n",
    "    end=time.time()\n",
    "    print(\"用时%f秒\"%(end-start))\n",
    "    \n",
    "    #提取出测试集部分，根据预测结果计算评价指标\n",
    "    record_test=record[record['istest']==1].copy()\n",
    "    print(\"RMSE为：%.5f\"%rmse(record_test['pre'],record_test['rating']))\n",
    "    print(\"MAE为：%.5f\"%mae(record_test['pre'],record_test['rating']))\n",
    "    return record_test"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "735cf18d",
   "metadata": {},
   "source": [
    "训练PQ，预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "2bbe9a61",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第1步训练集损失为：12.291261\n",
      "第1步验证集损失为：9.578183\n",
      "第1步验证集rmse为：3.094864\n",
      "第1步验证集mae为：0.196604\n",
      "第2步训练集损失为：3.873351\n",
      "第2步验证集损失为：5.428866\n",
      "第2步验证集rmse为：2.329993\n",
      "第2步验证集mae为：0.172990\n",
      "第3步训练集损失为：2.552845\n",
      "第3步验证集损失为：4.424390\n",
      "第3步验证集rmse为：2.103423\n",
      "第3步验证集mae为：0.151264\n",
      "第4步训练集损失为：2.065512\n",
      "第4步验证集损失为：4.182254\n",
      "第4步验证集rmse为：2.045056\n",
      "第4步验证集mae为：0.137817\n",
      "第5步训练集损失为：1.816226\n",
      "第5步验证集损失为：4.145787\n",
      "第5步验证集rmse为：2.036121\n",
      "第5步验证集mae为：0.132353\n",
      "第6步训练集损失为：1.672795\n",
      "第6步验证集损失为：4.172737\n",
      "第6步验证集rmse为：2.042728\n",
      "第6步验证集mae为：0.132979\n",
      "用时:1879.291295秒\n"
     ]
    }
   ],
   "source": [
    "start=time.time()\n",
    "P,Q,B_user,B_item,u,y,train_rmse_lst,validation_rmse_lst,train_mae_lst,validation_mae_lst=LatentFactorModel(train,20,0.01,0.01,3000)\n",
    "end=time.time()\n",
    "print(\"用时:%f秒\"%(end-start))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "8314f22a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "无法对用户4关于电影的评分43708做出预测，因为训练集中没有该物品数据\n",
      "无法对用户4关于电影的评分26819做出预测，因为训练集中没有该物品数据\n",
      "无法对用户4关于电影的评分26870做出预测，因为训练集中没有该物品数据\n",
      "无法对用户8关于电影的评分1317做出预测，因为训练集中没有该物品数据\n",
      "无法对用户14关于电影的评分166024做出预测，因为训练集中没有该物品数据\n",
      "无法对用户19关于电影的评分545做出预测，因为训练集中没有该物品数据\n",
      "无法对用户48关于电影的评分156387做出预测，因为训练集中没有该物品数据\n",
      "无法对用户51关于电影的评分1317做出预测，因为训练集中没有该物品数据\n",
      "无法对用户54关于电影的评分1426做出预测，因为训练集中没有该物品数据\n",
      "无法对用户55关于电影的评分5765做出预测，因为训练集中没有该物品数据\n",
      "无法对用户55关于电影的评分3759做出预测，因为训练集中没有该物品数据\n",
      "无法对用户56关于电影的评分6220做出预测，因为训练集中没有该物品数据\n",
      "无法对用户56关于电影的评分89780做出预测，因为训练集中没有该物品数据\n",
      "无法对用户56关于电影的评分82242做出预测，因为训练集中没有该物品数据\n",
      "无法对用户71关于电影的评分26587做出预测，因为训练集中没有该物品数据\n",
      "无法对用户71关于电影的评分34542做出预测，因为训练集中没有该物品数据\n",
      "无法对用户71关于电影的评分40586做出预测，因为训练集中没有该物品数据\n",
      "无法对用户73关于电影的评分5515做出预测，因为训练集中没有该物品数据\n",
      "无法对用户73关于电影的评分98795做出预测，因为训练集中没有该物品数据\n",
      "无法对用户73关于电影的评分111757做出预测，因为训练集中没有该物品数据\n",
      "无法对用户81关于电影的评分82143做出预测，因为训练集中没有该物品数据\n",
      "无法对用户81关于电影的评分80185做出预测，因为训练集中没有该物品数据\n",
      "无法对用户81关于电影的评分85312做出预测，因为训练集中没有该物品数据\n",
      "无法对用户81关于电影的评分118244做出预测，因为训练集中没有该物品数据\n",
      "无法对用户83关于电影的评分641做出预测，因为训练集中没有该物品数据\n",
      "无法对用户83关于电影的评分201做出预测，因为训练集中没有该物品数据\n",
      "无法对用户83关于电影的评分754做出预测，因为训练集中没有该物品数据\n",
      "无法对用户88关于电影的评分74156做出预测，因为训练集中没有该物品数据\n",
      "无法对用户95关于电影的评分2238做出预测，因为训练集中没有该物品数据\n",
      "无法对用户95关于电影的评分6884做出预测，因为训练集中没有该物品数据\n",
      "无法对用户95关于电影的评分6762做出预测，因为训练集中没有该物品数据\n",
      "无法对用户95关于电影的评分7745做出预测，因为训练集中没有该物品数据\n",
      "无法对用户97关于电影的评分79318做出预测，因为训练集中没有该物品数据\n",
      "无法对用户99关于电影的评分141420做出预测，因为训练集中没有该物品数据\n",
      "无法对用户99关于电影的评分108506做出预测，因为训练集中没有该物品数据\n",
      "无法对用户103关于电影的评分1720做出预测，因为训练集中没有该物品数据\n",
      "无法对用户105关于电影的评分6523做出预测，因为训练集中没有该物品数据\n",
      "无法对用户105关于电影的评分6518做出预测，因为训练集中没有该物品数据\n",
      "无法对用户105关于电影的评分6464做出预测，因为训练集中没有该物品数据\n",
      "无法对用户119关于电影的评分7068做出预测，因为训练集中没有该物品数据\n",
      "无法对用户119关于电影的评分55207做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分160563做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分138212做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分8811做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分33681做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分5597做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分7012做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分7986做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分4497做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分4092做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分9004做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分5764做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分26124做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分27003做出预测，因为训练集中没有该物品数据\n",
      "无法对用户134关于电影的评分63826做出预测，因为训练集中没有该物品数据\n",
      "无法对用户138关于电影的评分6720做出预测，因为训练集中没有该物品数据\n",
      "无法对用户151关于电影的评分6211做出预测，因为训练集中没有该物品数据\n",
      "无法对用户151关于电影的评分49951做出预测，因为训练集中没有该物品数据\n",
      "无法对用户151关于电影的评分140866做出预测，因为训练集中没有该物品数据\n",
      "无法对用户151关于电影的评分140868做出预测，因为训练集中没有该物品数据\n",
      "无法对用户151关于电影的评分136908做出预测，因为训练集中没有该物品数据\n",
      "无法对用户151关于电影的评分107649做出预测，因为训练集中没有该物品数据\n",
      "无法对用户151关于电影的评分140872做出预测，因为训练集中没有该物品数据\n",
      "无法对用户151关于电影的评分140880做出预测，因为训练集中没有该物品数据\n",
      "无法对用户151关于电影的评分6878做出预测，因为训练集中没有该物品数据\n",
      "无法对用户160关于电影的评分1806做出预测，因为训练集中没有该物品数据\n",
      "无法对用户160关于电影的评分6840做出预测，因为训练集中没有该物品数据\n",
      "无法对用户164关于电影的评分75做出预测，因为训练集中没有该物品数据\n",
      "无法对用户165关于电影的评分298做出预测，因为训练集中没有该物品数据\n",
      "无法对用户165关于电影的评分124做出预测，因为训练集中没有该物品数据\n",
      "无法对用户165关于电影的评分148做出预测，因为训练集中没有该物品数据\n",
      "无法对用户172关于电影的评分94969做出预测，因为训练集中没有该物品数据\n",
      "无法对用户172关于电影的评分98956做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分91325做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分74156做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分145935做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分93475做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分133383做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分122884做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分138210做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分155625做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分159061做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分160573做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分165101做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分160563做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分163937做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分93819做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分145070做出预测，因为训练集中没有该物品数据\n",
      "无法对用户173关于电影的评分156387做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分175519做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分166918做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分170403做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分170809做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分161127做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分131170做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分76087做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分165347做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分155078做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分130784做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分127188做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分121143做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分157340做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分167036做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分177763做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分177497做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分157318做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分158027做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分170645做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分184471做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分178421做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分152061做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分174371做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分166544做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分187601做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分105742做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分56022做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分162322做出预测，因为训练集中没有该物品数据\n",
      "无法对用户176关于电影的评分147942做出预测，因为训练集中没有该物品数据\n",
      "无法对用户182关于电影的评分59333做出预测，因为训练集中没有该物品数据\n",
      "无法对用户187关于电影的评分3118做出预测，因为训练集中没有该物品数据\n",
      "无法对用户196关于电影的评分6311做出预测，因为训练集中没有该物品数据\n",
      "无法对用户206关于电影的评分167842做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分152065做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分105364做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分111661做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分74156做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分163508做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分169992做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分161954做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分163959做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分91416做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分176921做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分167426做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分169068做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分165179做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分173141做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分150284做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分163068做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分5506做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分103721做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分177689做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分180297做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分182379做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分130578做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分181315做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分128620做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分163134做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分134796做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分104636做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分138210做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分167794做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分173369做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分183897做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分183161做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分185029做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分179133做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分179119做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分100272做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分32707做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分6961做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分175813做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分179111做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分127108做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分180451做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分189333做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分177651做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分188213做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分118246做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分179135做出预测，因为训练集中没有该物品数据\n",
      "无法对用户214关于电影的评分178401做出预测，因为训练集中没有该物品数据\n",
      "无法对用户218关于电影的评分476做出预测，因为训练集中没有该物品数据\n",
      "无法对用户222关于电影的评分62277做出预测，因为训练集中没有该物品数据\n",
      "无法对用户227关于电影的评分26322做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分6727做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分6665做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分5764做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分5745做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分5801做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分5830做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分5864做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分4373做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分6109做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分2689做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分6568做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7386做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分6596做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分6946做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7389做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分1313做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分6563做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7917做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分8149做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分8121做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7995做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7983做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7959做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7817做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7815做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7813做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7614做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7474做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7478做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7442做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7304做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7236做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7128做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7068做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7060做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分8585做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分7155做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分1144做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分6710做出预测，因为训练集中没有该物品数据\n",
      "无法对用户235关于电影的评分1780做出预测，因为训练集中没有该物品数据\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "无法对用户235关于电影的评分6375做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5730做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5705做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5731做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5701做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5694做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5689做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5843做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5845做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5827做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5935做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5930做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5927做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5926做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5919做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5961做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5988做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分4656做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分5011做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6033做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6038做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6036做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分868做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分3432做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6115做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6153做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6106做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6180做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6178做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6177做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6173做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6179做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6240做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6275做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6313做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6321做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6320做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6319做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6308做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6309做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6312做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6315做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6346做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6348做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6198做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6102做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6430做出预测，因为训练集中没有该物品数据\n",
      "无法对用户239关于电影的评分6396做出预测，因为训练集中没有该物品数据\n",
      "无法对用户241关于电影的评分1442做出预测，因为训练集中没有该物品数据\n",
      "无法对用户243关于电影的评分25934做出预测，因为训练集中没有该物品数据\n",
      "无法对用户247关于电影的评分73572做出预测，因为训练集中没有该物品数据\n",
      "无法对用户248关于电影的评分109243做出预测，因为训练集中没有该物品数据\n",
      "无法对用户248关于电影的评分133782做出预测，因为训练集中没有该物品数据\n",
      "无法对用户248关于电影的评分174909做出预测，因为训练集中没有该物品数据\n",
      "无法对用户248关于电影的评分179345做出预测，因为训练集中没有该物品数据\n",
      "无法对用户248关于电影的评分177231做出预测，因为训练集中没有该物品数据\n",
      "无法对用户248关于电影的评分183897做出预测，因为训练集中没有该物品数据\n",
      "无法对用户249关于电影的评分4240做出预测，因为训练集中没有该物品数据\n",
      "无法对用户249关于电影的评分4077做出预测，因为训练集中没有该物品数据\n",
      "无法对用户249关于电影的评分4313做出预测，因为训练集中没有该物品数据\n",
      "无法对用户250关于电影的评分8033做出预测，因为训练集中没有该物品数据\n",
      "无法对用户255关于电影的评分3078做出预测，因为训练集中没有该物品数据\n",
      "无法对用户263关于电影的评分7155做出预测，因为训练集中没有该物品数据\n",
      "无法对用户268关于电影的评分6234做出预测，因为训练集中没有该物品数据\n",
      "无法对用户268关于电影的评分7168做出预测，因为训练集中没有该物品数据\n",
      "无法对用户268关于电影的评分6247做出预测，因为训练集中没有该物品数据\n",
      "无法对用户277关于电影的评分81312做出预测，因为训练集中没有该物品数据\n",
      "无法对用户277关于电影的评分53143做出预测，因为训练集中没有该物品数据\n",
      "无法对用户277关于电影的评分6684做出预测，因为训练集中没有该物品数据\n",
      "无法对用户277关于电影的评分47904做出预测，因为训练集中没有该物品数据\n",
      "无法对用户277关于电影的评分44100做出预测，因为训练集中没有该物品数据\n",
      "无法对用户277关于电影的评分131451做出预测，因为训练集中没有该物品数据\n",
      "无法对用户277关于电影的评分6460做出预测，因为训练集中没有该物品数据\n",
      "无法对用户277关于电影的评分61697做出预测，因为训练集中没有该物品数据\n",
      "无法对用户277关于电影的评分38701做出预测，因为训练集中没有该物品数据\n",
      "无法对用户277关于电影的评分51418做出预测，因为训练集中没有该物品数据\n",
      "无法对用户288关于电影的评分3808做出预测，因为训练集中没有该物品数据\n",
      "无法对用户295关于电影的评分71730做出预测，因为训练集中没有该物品数据\n",
      "无法对用户295关于电影的评分7983做出预测，因为训练集中没有该物品数据\n",
      "无法对用户295关于电影的评分49220做出预测，因为训练集中没有该物品数据\n",
      "无法对用户300关于电影的评分4939做出预测，因为训练集中没有该物品数据\n",
      "无法对用户301关于电影的评分5864做出预测，因为训练集中没有该物品数据\n",
      "无法对用户301关于电影的评分6991做出预测，因为训练集中没有该物品数据\n",
      "无法对用户319关于电影的评分2101做出预测，因为训练集中没有该物品数据\n",
      "无法对用户321关于电影的评分43983做出预测，因为训练集中没有该物品数据\n",
      "无法对用户321关于电影的评分163134做出预测，因为训练集中没有该物品数据\n",
      "无法对用户321关于电影的评分176103做出预测，因为训练集中没有该物品数据\n",
      "无法对用户321关于电影的评分177763做出预测，因为训练集中没有该物品数据\n",
      "无法对用户321关于电影的评分56931做出预测，因为训练集中没有该物品数据\n",
      "无法对用户321关于电影的评分189363做出预测，因为训练集中没有该物品数据\n",
      "无法对用户332关于电影的评分26198做出预测，因为训练集中没有该物品数据\n",
      "无法对用户332关于电影的评分4676做出预测，因为训练集中没有该物品数据\n",
      "无法对用户332关于电影的评分3501做出预测，因为训练集中没有该物品数据\n",
      "无法对用户339关于电影的评分167620做出预测，因为训练集中没有该物品数据\n",
      "无法对用户339关于电影的评分88267做出预测，因为训练集中没有该物品数据\n",
      "无法对用户343关于电影的评分6314做出预测，因为训练集中没有该物品数据\n",
      "无法对用户345关于电影的评分438做出预测，因为训练集中没有该物品数据\n",
      "无法对用户345关于电影的评分7026做出预测，因为训练集中没有该物品数据\n",
      "无法对用户345关于电影的评分5694做出预测，因为训练集中没有该物品数据\n",
      "无法对用户357关于电影的评分4353做出预测，因为训练集中没有该物品数据\n",
      "无法对用户357关于电影的评分3442做出预测，因为训练集中没有该物品数据\n",
      "无法对用户357关于电影的评分4099做出预测，因为训练集中没有该物品数据\n",
      "无法对用户357关于电影的评分4654做出预测，因为训练集中没有该物品数据\n",
      "无法对用户357关于电影的评分2756做出预测，因为训练集中没有该物品数据\n",
      "无法对用户357关于电影的评分3768做出预测，因为训练集中没有该物品数据\n",
      "无法对用户363关于电影的评分26680做出预测，因为训练集中没有该物品数据\n",
      "无法对用户375关于电影的评分179135做出预测，因为训练集中没有该物品数据\n",
      "无法对用户377关于电影的评分55116做出预测，因为训练集中没有该物品数据\n",
      "无法对用户377关于电影的评分60293做出预测，因为训练集中没有该物品数据\n",
      "无法对用户378关于电影的评分69458做出预测，因为训练集中没有该物品数据\n",
      "无法对用户382关于电影的评分5646做出预测，因为训练集中没有该物品数据\n",
      "无法对用户387关于电影的评分62265做出预测，因为训练集中没有该物品数据\n",
      "无法对用户392关于电影的评分26269做出预测，因为训练集中没有该物品数据\n",
      "无法对用户396关于电影的评分38994做出预测，因为训练集中没有该物品数据\n",
      "无法对用户396关于电影的评分71619做出预测，因为训练集中没有该物品数据\n",
      "无法对用户396关于电影的评分71184做出预测，因为训练集中没有该物品数据\n",
      "无法对用户396关于电影的评分68963做出预测，因为训练集中没有该物品数据\n",
      "无法对用户402关于电影的评分1133做出预测，因为训练集中没有该物品数据\n",
      "无法对用户403关于电影的评分118814做出预测，因为训练集中没有该物品数据\n",
      "无法对用户403关于电影的评分74154做出预测，因为训练集中没有该物品数据\n",
      "无法对用户403关于电影的评分105855做出预测，因为训练集中没有该物品数据\n",
      "无法对用户403关于电影的评分157274做出预测，因为训练集中没有该物品数据\n",
      "无法对用户403关于电影的评分97328做出预测，因为训练集中没有该物品数据\n",
      "无法对用户408关于电影的评分1733做出预测，因为训练集中没有该物品数据\n",
      "无法对用户408关于电影的评分1571做出预测，因为训练集中没有该物品数据\n",
      "无法对用户423关于电影的评分245做出预测，因为训练集中没有该物品数据\n",
      "无法对用户427关于电影的评分2885做出预测，因为训练集中没有该物品数据\n",
      "无法对用户427关于电影的评分3143做出预测，因为训练集中没有该物品数据\n",
      "无法对用户427关于电影的评分7236做出预测，因为训练集中没有该物品数据\n",
      "无法对用户427关于电影的评分4286做出预测，因为训练集中没有该物品数据\n",
      "无法对用户427关于电影的评分31107做出预测，因为训练集中没有该物品数据\n",
      "无法对用户427关于电影的评分7461做出预测，因为训练集中没有该物品数据\n",
      "无法对用户445关于电影的评分981做出预测，因为训练集中没有该物品数据\n",
      "无法对用户447关于电影的评分6801做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分179863做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分179287做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分179437做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分183815做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分179285做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分184253做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分179491做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分168586做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分126548做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分184937做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分135504做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分114182做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分115828做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分132798做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分186331做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分104947做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分187481做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分79572做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分188449做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分189399做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分189363做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分135230做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分103606做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分123683做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分189333做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分128520做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分148388做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分190085做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分132800做出预测，因为训练集中没有该物品数据\n",
      "无法对用户449关于电影的评分96863做出预测，因为训练集中没有该物品数据\n",
      "无法对用户457关于电影的评分8010做出预测，因为训练集中没有该物品数据\n",
      "无法对用户458关于电影的评分37477做出预测，因为训练集中没有该物品数据\n",
      "无法对用户458关于电影的评分40574做出预测，因为训练集中没有该物品数据\n",
      "无法对用户458关于电影的评分27408做出预测，因为训练集中没有该物品数据\n",
      "无法对用户463关于电影的评分807做出预测，因为训练集中没有该物品数据\n",
      "无法对用户463关于电影的评分872做出预测，因为训练集中没有该物品数据\n",
      "无法对用户465关于电影的评分106491做出预测，因为训练集中没有该物品数据\n",
      "无法对用户471关于电影的评分162322做出预测，因为训练集中没有该物品数据\n",
      "无法对用户473关于电影的评分3187做出预测，因为训练集中没有该物品数据\n",
      "无法对用户473关于电影的评分3402做出预测，因为训练集中没有该物品数据\n",
      "无法对用户473关于电影的评分3637做出预测，因为训练集中没有该物品数据\n",
      "无法对用户491关于电影的评分1063做出预测，因为训练集中没有该物品数据\n",
      "无法对用户496关于电影的评分3124做出预测，因为训练集中没有该物品数据\n",
      "无法对用户514关于电影的评分59392做出预测，因为训练集中没有该物品数据\n",
      "无法对用户521关于电影的评分59440做出预测，因为训练集中没有该物品数据\n",
      "无法对用户526关于电影的评分5588做出预测，因为训练集中没有该物品数据\n",
      "无法对用户526关于电影的评分78319做出预测，因为训练集中没有该物品数据\n",
      "无法对用户526关于电影的评分92206做出预测，因为训练集中没有该物品数据\n",
      "无法对用户526关于电影的评分103547做出预测，因为训练集中没有该物品数据\n",
      "无法对用户526关于电影的评分133295做出预测，因为训练集中没有该物品数据\n",
      "无法对用户526关于电影的评分96214做出预测，因为训练集中没有该物品数据\n",
      "无法对用户526关于电影的评分5891做出预测，因为训练集中没有该物品数据\n",
      "无法对用户526关于电影的评分80185做出预测，因为训练集中没有该物品数据\n",
      "无法对用户526关于电影的评分5734做出预测，因为训练集中没有该物品数据\n",
      "无法对用户526关于电影的评分5786做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分117887做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分6921做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分5725做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分91488做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分81665做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分8933做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分4998做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分33480做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分4405做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分114394做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分6412做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分60189做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分3588做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分7617做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分55926做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分42548做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分116056做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分3311做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分90413做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分129490做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分89305做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分152091做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分167036做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分170645做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分169758做出预测，因为训练集中没有该物品数据\n",
      "无法对用户540关于电影的评分105608做出预测，因为训练集中没有该物品数据\n",
      "无法对用户548关于电影的评分82744做出预测，因为训练集中没有该物品数据\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "无法对用户556关于电影的评分56060做出预测，因为训练集中没有该物品数据\n",
      "无法对用户556关于电影的评分47491做出预测，因为训练集中没有该物品数据\n",
      "无法对用户574关于电影的评分188309做出预测，因为训练集中没有该物品数据\n",
      "无法对用户574关于电影的评分133832做出预测，因为训练集中没有该物品数据\n",
      "无法对用户574关于电影的评分148172做出预测，因为训练集中没有该物品数据\n",
      "无法对用户574关于电影的评分170813做出预测，因为训练集中没有该物品数据\n",
      "无法对用户574关于电影的评分99721做出预测，因为训练集中没有该物品数据\n",
      "无法对用户581关于电影的评分6054做出预测，因为训练集中没有该物品数据\n",
      "无法对用户581关于电影的评分6445做出预测，因为训练集中没有该物品数据\n",
      "无法对用户581关于电影的评分5392做出预测，因为训练集中没有该物品数据\n",
      "无法对用户581关于电影的评分3144做出预测，因为训练集中没有该物品数据\n",
      "无法对用户581关于电影的评分2201做出预测，因为训练集中没有该物品数据\n",
      "无法对用户581关于电影的评分2209做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分8770做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分7437做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分33681做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分26386做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分26285做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分32383做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分26488做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分32116做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分31251做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分7122做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分7815做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分7478做出预测，因为训练集中没有该物品数据\n",
      "无法对用户590关于电影的评分7353做出预测，因为训练集中没有该物品数据\n",
      "无法对用户593关于电影的评分2264做出预测，因为训练集中没有该物品数据\n",
      "无法对用户593关于电影的评分2477做出预测，因为训练集中没有该物品数据\n",
      "无法对用户593关于电影的评分3042做出预测，因为训练集中没有该物品数据\n",
      "无法对用户597关于电影的评分103233做出预测，因为训练集中没有该物品数据\n",
      "无法对用户599关于电影的评分26903做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分59336做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分56945做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分59418做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分27114做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分60674做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分61697做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分59143做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分61073做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分27450做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分43391做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分31785做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分60405做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分63222做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分62235做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分65939做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分44317做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分65907做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分65552做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分46613做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分27643做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分58287做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分27309做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分27152做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分73511做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分46821做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分26602做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分27602做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分72308做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分71910做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分71810做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分61567做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分70706做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分26560做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分26949做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分48673做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分27705做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分74139做出预测，因为训练集中没有该物品数据\n",
      "无法对用户601关于电影的评分79536做出预测，因为训练集中没有该物品数据\n",
      "无法对用户605关于电影的评分101850做出预测，因为训练集中没有该物品数据\n",
      "无法对用户605关于电影的评分6558做出预测，因为训练集中没有该物品数据\n",
      "无法对用户605关于电影的评分27729做出预测，因为训练集中没有该物品数据\n",
      "无法对用户605关于电影的评分97196做出预测，因为训练集中没有该物品数据\n",
      "无法对用户605关于电影的评分80839做出预测，因为训练集中没有该物品数据\n",
      "无法对用户605关于电影的评分47202做出预测，因为训练集中没有该物品数据\n",
      "无法对用户605关于电影的评分60674做出预测，因为训练集中没有该物品数据\n",
      "无法对用户605关于电影的评分59392做出预测，因为训练集中没有该物品数据\n",
      "无法对用户616关于电影的评分1460做出预测，因为训练集中没有该物品数据\n",
      "无法对用户632关于电影的评分126548做出预测，因为训练集中没有该物品数据\n",
      "无法对用户653关于电影的评分117464做出预测，因为训练集中没有该物品数据\n",
      "无法对用户667关于电影的评分111764做出预测，因为训练集中没有该物品数据\n",
      "无法对用户667关于电影的评分108825做出预测，因为训练集中没有该物品数据\n",
      "无法对用户667关于电影的评分109963做出预测，因为训练集中没有该物品数据\n",
      "无法对用户667关于电影的评分108078做出预测，因为训练集中没有该物品数据\n",
      "无法对用户667关于电影的评分73804做出预测，因为训练集中没有该物品数据\n",
      "无法对用户667关于电影的评分142456做出预测，因为训练集中没有该物品数据\n",
      "无法对用户667关于电影的评分165951做出预测，因为训练集中没有该物品数据\n",
      "无法对用户667关于电影的评分162474做出预测，因为训练集中没有该物品数据\n",
      "无法对用户667关于电影的评分166285做出预测，因为训练集中没有该物品数据\n",
      "无法对用户667关于电影的评分168646做出预测，因为训练集中没有该物品数据\n",
      "无法对用户667关于电影的评分87992做出预测，因为训练集中没有该物品数据\n",
      "无法对用户669关于电影的评分6012做出预测，因为训练集中没有该物品数据\n",
      "无法对用户669关于电影的评分6523做出预测，因为训练集中没有该物品数据\n",
      "无法对用户669关于电影的评分6315做出预测，因为训练集中没有该物品数据\n",
      "无法对用户669关于电影的评分6584做出预测，因为训练集中没有该物品数据\n",
      "无法对用户669关于电影的评分6689做出预测，因为训练集中没有该物品数据\n",
      "无法对用户697关于电影的评分167036做出预测，因为训练集中没有该物品数据\n",
      "无法对用户697关于电影的评分114552做出预测，因为训练集中没有该物品数据\n",
      "无法对用户697关于电影的评分157340做出预测，因为训练集中没有该物品数据\n",
      "无法对用户697关于电影的评分130075做出预测，因为训练集中没有该物品数据\n",
      "无法对用户697关于电影的评分170957做出预测，因为训练集中没有该物品数据\n",
      "无法对用户697关于电影的评分179811做出预测，因为训练集中没有该物品数据\n",
      "无法对用户697关于电影的评分133945做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分113604做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分111795做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分114184做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分114265做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分144760做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分140131做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分162322做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分161580做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分165527做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分167018做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分166788做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分157312做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分140301做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分155509做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分107640做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分167234做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分108134做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分156369做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分165347做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分161956做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分172813做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分169028做出预测，因为训练集中没有该物品数据\n",
      "无法对用户719关于电影的评分173835做出预测，因为训练集中没有该物品数据\n",
      "无法对用户722关于电影的评分68288做出预测，因为训练集中没有该物品数据\n",
      "无法对用户728关于电影的评分179135做出预测，因为训练集中没有该物品数据\n",
      "无法对用户755关于电影的评分2675做出预测，因为训练集中没有该物品数据\n",
      "无法对用户757关于电影的评分100611做出预测，因为训练集中没有该物品数据\n",
      "无法对用户757关于电影的评分90738做出预测，因为训练集中没有该物品数据\n",
      "无法对用户760关于电影的评分179做出预测，因为训练集中没有该物品数据\n",
      "无法对用户769关于电影的评分108做出预测，因为训练集中没有该物品数据\n",
      "无法对用户772关于电影的评分59143做出预测，因为训练集中没有该物品数据\n",
      "无法对用户778关于电影的评分25801做出预测，因为训练集中没有该物品数据\n",
      "无法对用户790关于电影的评分797做出预测，因为训练集中没有该物品数据\n",
      "无法对用户795关于电影的评分6625做出预测，因为训练集中没有该物品数据\n",
      "无法对用户795关于电影的评分26849做出预测，因为训练集中没有该物品数据\n",
      "无法对用户795关于电影的评分6788做出预测，因为训练集中没有该物品数据\n",
      "无法对用户795关于电影的评分32442做出预测，因为训练集中没有该物品数据\n",
      "无法对用户795关于电影的评分44241做出预测，因为训练集中没有该物品数据\n",
      "无法对用户795关于电影的评分70990做出预测，因为训练集中没有该物品数据\n",
      "无法对用户795关于电影的评分26856做出预测，因为训练集中没有该物品数据\n",
      "无法对用户795关于电影的评分78539做出预测，因为训练集中没有该物品数据\n",
      "无法对用户804关于电影的评分120478做出预测，因为训练集中没有该物品数据\n",
      "无法对用户804关于电影的评分103659做出预测，因为训练集中没有该物品数据\n",
      "无法对用户804关于电影的评分183897做出预测，因为训练集中没有该物品数据\n",
      "无法对用户807关于电影的评分86290做出预测，因为训练集中没有该物品数据\n",
      "无法对用户808关于电影的评分27251做出预测，因为训练集中没有该物品数据\n",
      "无法对用户813关于电影的评分8582做出预测，因为训练集中没有该物品数据\n",
      "无法对用户814关于电影的评分2293做出预测，因为训练集中没有该物品数据\n",
      "无法对用户814关于电影的评分3158做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分85261做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分35015做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分114552做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分104303做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分117887做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分155894做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分127114做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分157961做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分141397做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分167732做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分169028做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分140301做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分167018做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分155062做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分166024做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分175333做出预测，因为训练集中没有该物品数据\n",
      "无法对用户815关于电影的评分180095做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分151759做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分108709做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分164917做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分158858做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分110669做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分184257做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分167392做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分178061做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分148036做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分168608做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分159195做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分180095做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分180297做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分161127做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分141946做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分157318做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分180045做出预测，因为训练集中没有该物品数据\n",
      "无法对用户818关于电影的评分181315做出预测，因为训练集中没有该物品数据\n",
      "无法对用户830关于电影的评分4404做出预测，因为训练集中没有该物品数据\n",
      "无法对用户830关于电影的评分7786做出预测，因为训练集中没有该物品数据\n",
      "无法对用户830关于电影的评分43177做出预测，因为训练集中没有该物品数据\n",
      "无法对用户830关于电影的评分60816做出预测，因为训练集中没有该物品数据\n",
      "无法对用户842关于电影的评分476做出预测，因为训练集中没有该物品数据\n",
      "无法对用户842关于电影的评分1798做出预测，因为训练集中没有该物品数据\n",
      "无法对用户854关于电影的评分4241做出预测，因为训练集中没有该物品数据\n",
      "无法对用户861关于电影的评分2047做出预测，因为训练集中没有该物品数据\n",
      "无法对用户861关于电影的评分6232做出预测，因为训练集中没有该物品数据\n",
      "无法对用户864关于电影的评分60674做出预测，因为训练集中没有该物品数据\n",
      "无法对用户864关于电影的评分117496做出预测，因为训练集中没有该物品数据\n",
      "无法对用户864关于电影的评分123288做出预测，因为训练集中没有该物品数据\n",
      "无法对用户864关于电影的评分71201做出预测，因为训练集中没有该物品数据\n",
      "无法对用户867关于电影的评分33072做出预测，因为训练集中没有该物品数据\n",
      "无法对用户867关于电影的评分33245做出预测，因为训练集中没有该物品数据\n",
      "无法对用户867关于电影的评分42783做出预测，因为训练集中没有该物品数据\n",
      "无法对用户867关于电影的评分56631做出预测，因为训练集中没有该物品数据\n",
      "无法对用户869关于电影的评分59143做出预测，因为训练集中没有该物品数据\n",
      "无法对用户869关于电影的评分6784做出预测，因为训练集中没有该物品数据\n",
      "无法对用户869关于电影的评分54934做出预测，因为训练集中没有该物品数据\n",
      "无法对用户869关于电影的评分60141做出预测，因为训练集中没有该物品数据\n",
      "无法对用户869关于电影的评分61255做出预测，因为训练集中没有该物品数据\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "无法对用户883关于电影的评分706做出预测，因为训练集中没有该物品数据\n",
      "无法对用户883关于电影的评分834做出预测，因为训练集中没有该物品数据\n",
      "无法对用户890关于电影的评分7059做出预测，因为训练集中没有该物品数据\n",
      "无法对用户890关于电影的评分4263做出预测，因为训练集中没有该物品数据\n",
      "无法对用户896关于电影的评分2938做出预测，因为训练集中没有该物品数据\n",
      "无法对用户907关于电影的评分751做出预测，因为训练集中没有该物品数据\n",
      "无法对用户917关于电影的评分33675做出预测，因为训练集中没有该物品数据\n",
      "无法对用户926关于电影的评分5311做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分48883做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分62049做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分26989做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分63237做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分33410做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分61961做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分58367做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分52227做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分54278做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分26700做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分50005做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分7124做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分8809做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分55288做出预测，因为训练集中没有该物品数据\n",
      "无法对用户930关于电影的评分60816做出预测，因为训练集中没有该物品数据\n",
      "无法对用户932关于电影的评分268做出预测，因为训练集中没有该物品数据\n",
      "无法对用户939关于电影的评分34450做出预测，因为训练集中没有该物品数据\n",
      "无法对用户939关于电影的评分7041做出预测，因为训练集中没有该物品数据\n",
      "无法对用户939关于电影的评分93240做出预测，因为训练集中没有该物品数据\n",
      "无法对用户939关于电影的评分133782做出预测，因为训练集中没有该物品数据\n",
      "无法对用户953关于电影的评分2342做出预测，因为训练集中没有该物品数据\n",
      "无法对用户953关于电影的评分115做出预测，因为训练集中没有该物品数据\n",
      "无法对用户953关于电影的评分1571做出预测，因为训练集中没有该物品数据\n",
      "无法对用户954关于电影的评分89480做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分92643做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分106983做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分136926做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分111387做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分104339做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分143271做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分141674做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分148956做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分140289做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分159191做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分147607做出预测，因为训练集中没有该物品数据\n",
      "无法对用户957关于电影的评分117877做出预测，因为训练集中没有该物品数据\n",
      "无法对用户970关于电影的评分130970做出预测，因为训练集中没有该物品数据\n",
      "无法对用户970关于电影的评分100106做出预测，因为训练集中没有该物品数据\n",
      "无法对用户970关于电影的评分44633做出预测，因为训练集中没有该物品数据\n",
      "无法对用户970关于电影的评分26164做出预测，因为训练集中没有该物品数据\n",
      "无法对用户970关于电影的评分6395做出预测，因为训练集中没有该物品数据\n",
      "无法对用户970关于电影的评分103444做出预测，因为训练集中没有该物品数据\n",
      "无法对用户970关于电影的评分56490做出预测，因为训练集中没有该物品数据\n",
      "无法对用户970关于电影的评分148238做出预测，因为训练集中没有该物品数据\n",
      "无法对用户972关于电影的评分3103做出预测，因为训练集中没有该物品数据\n",
      "无法对用户972关于电影的评分8899做出预测，因为训练集中没有该物品数据\n",
      "无法对用户982关于电影的评分5192做出预测，因为训练集中没有该物品数据\n",
      "无法对用户982关于电影的评分8952做出预测，因为训练集中没有该物品数据\n",
      "无法对用户984关于电影的评分170403做出预测，因为训练集中没有该物品数据\n",
      "无法对用户1000关于电影的评分73860做出预测，因为训练集中没有该物品数据\n",
      "用时231.594510秒\n",
      "RMSE为：1.98347\n",
      "MAE为：0.30956\n"
     ]
    }
   ],
   "source": [
    "record_test = test_predict(record,train,P,Q,B_user,B_item,u,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "id": "0ee6f8be",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif']=['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "plt.figure(figsize=(10,5))\n",
    "x=np.arange(1,len(train_rmse_lst)+1)\n",
    "y_train_rmse_lst=train_rmse_lst\n",
    "y_validation_rmse_lst=validation_rmse_lst\n",
    "plt.plot(x,y_train_rmse_lst,label=\"train\")\n",
    "plt.plot(x,y_validation_rmse_lst,label=\"validation\")\n",
    "plt.xlabel(\"training steps\",fontsize=15)\n",
    "plt.ylabel(\"RMSE\",fontsize=15)\n",
    "plt.legend(fontsize=15)\n",
    "\n",
    "plt.savefig(\"E:/推荐系统/图片/SVD++_RMSE.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "id": "888d3a90",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif']=['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "\n",
    "plt.figure(figsize=(10,5))\n",
    "x=np.arange(1,len(train_rmse_lst)+1)\n",
    "y_train_mae_lst=train_mae_lst\n",
    "y_validation_mae_lst=validation_mae_lst\n",
    "plt.plot(x,y_train_mae_lst,label=\"train\")\n",
    "plt.plot(x,y_validation_mae_lst,label=\"validation\")\n",
    "\n",
    "plt.xlabel(\"training steps\",fontsize=15)\n",
    "plt.ylabel(\"MAE\",fontsize=15)\n",
    "plt.legend(fontsize=15)\n",
    "plt.savefig(\"E:/推荐系统/图片/SVD++_MAE.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "15310cb9",
   "metadata": {},
   "outputs": [],
   "source": [
    "result_svd_plus=pd.DataFrame({'TrainRMSE':train_rmse_lst,\n",
    "                        'TrainMAE':train_mae_lst,\n",
    "                        'ValidationRMSE':validation_rmse_lst,\n",
    "                        'ValidationMAE':validation_mae_lst})\n",
    "result_svd_plus.to_csv('E:/推荐系统/图片/result_svd_plus.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "48ac431d",
   "metadata": {},
   "outputs": [],
   "source": [
    "result1 = pd.read_csv('E:/推荐系统/图片/result_svd.csv')\n",
    "result2 = pd.read_csv('E:/推荐系统/图片/result_bias_svd.csv')\n",
    "result3 = pd.read_csv('E:/推荐系统/图片/result_svd_plus.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "7a66635d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>TrainRMSE</th>\n",
       "      <th>TrainMAE</th>\n",
       "      <th>ValidationRMSE</th>\n",
       "      <th>ValidationMAE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.872714</td>\n",
       "      <td>2.067785</td>\n",
       "      <td>3.364766</td>\n",
       "      <td>2.416678</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.030327</td>\n",
       "      <td>0.974353</td>\n",
       "      <td>2.616726</td>\n",
       "      <td>1.317484</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.683393</td>\n",
       "      <td>0.632414</td>\n",
       "      <td>2.319216</td>\n",
       "      <td>0.956914</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.487486</td>\n",
       "      <td>0.463868</td>\n",
       "      <td>2.156407</td>\n",
       "      <td>0.773607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.358151</td>\n",
       "      <td>0.367051</td>\n",
       "      <td>2.052393</td>\n",
       "      <td>0.666742</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>226</th>\n",
       "      <td>0.558673</td>\n",
       "      <td>0.028147</td>\n",
       "      <td>1.569131</td>\n",
       "      <td>0.257300</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>227</th>\n",
       "      <td>0.558384</td>\n",
       "      <td>0.027978</td>\n",
       "      <td>1.569077</td>\n",
       "      <td>0.257098</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>228</th>\n",
       "      <td>0.558098</td>\n",
       "      <td>0.027811</td>\n",
       "      <td>1.569024</td>\n",
       "      <td>0.256898</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>229</th>\n",
       "      <td>0.557816</td>\n",
       "      <td>0.027646</td>\n",
       "      <td>1.568972</td>\n",
       "      <td>0.256700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>230</th>\n",
       "      <td>0.557538</td>\n",
       "      <td>0.027482</td>\n",
       "      <td>1.568921</td>\n",
       "      <td>0.256503</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>231 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     TrainRMSE  TrainMAE  ValidationRMSE  ValidationMAE\n",
       "0     2.872714  2.067785        3.364766       2.416678\n",
       "1     2.030327  0.974353        2.616726       1.317484\n",
       "2     1.683393  0.632414        2.319216       0.956914\n",
       "3     1.487486  0.463868        2.156407       0.773607\n",
       "4     1.358151  0.367051        2.052393       0.666742\n",
       "..         ...       ...             ...            ...\n",
       "226   0.558673  0.028147        1.569131       0.257300\n",
       "227   0.558384  0.027978        1.569077       0.257098\n",
       "228   0.558098  0.027811        1.569024       0.256898\n",
       "229   0.557816  0.027646        1.568972       0.256700\n",
       "230   0.557538  0.027482        1.568921       0.256503\n",
       "\n",
       "[231 rows x 4 columns]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "3bb979eb",
   "metadata": {},
   "outputs": [],
   "source": [
    "MAE_Train_dic={}\n",
    "RMSE_Train_dic={}\n",
    "MAE_Train_dic[1]=result1['TrainMAE']\n",
    "RMSE_Train_dic[1]=result1['TrainRMSE']\n",
    "MAE_Train_dic[2]=result2['TrainMAE']\n",
    "RMSE_Train_dic[2]=result2['TrainRMSE']\n",
    "MAE_Train_dic[3]=result3['TrainMAE']\n",
    "RMSE_Train_dic[3]=result3['TrainRMSE']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "ee30f650",
   "metadata": {},
   "outputs": [],
   "source": [
    "MAE_Validation_dic={}\n",
    "RMSE_Validation_dic={}\n",
    "MAE_Validation_dic[1]=result1['ValidationMAE']\n",
    "RMSE_Validation_dic[1]=result1['ValidationRMSE']\n",
    "MAE_Validation_dic[2]=result2['ValidationMAE']\n",
    "RMSE_Validation_dic[2]=result2['ValidationRMSE']\n",
    "MAE_Validation_dic[3]=result3['ValidationMAE']\n",
    "RMSE_Validation_dic[3]=result3['ValidationRMSE']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "cfb57cca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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V/D1r3+du+++mxdeeIErrrgCgJ07dzJ37lzWrl3LtGnTSEpKory8vNv327VrFwUFBQ376enpZGVlNez/85//5MYbb6SiooLjjz+ejIwM6uq63+1s27ZtjBkzpmE/sL1161bMjLS0tIbKCyAuLg7nen6sLJHe5DMfhVmFFGYVcuW0KwGoqathffF6lu9ezvLdy3nvk/eaJH6JMYlMGzyN43KPY3rudKYPmc7knMnER4fmeSHpx7rYkhYOVEeGpo5UktdcRgFM+ByseAxO/x7EJYc6IhEJc6eddhpHjhxh8+bNLFiwgFde8ebuuuGGGxg1ahQLFy7E5/PxwAMP8Kc//anb98vNzWXp0qUN+2VlZZSUlABQVVXFnDlz+NWvfsW1114LwGWXXdbiGj6fr8uVS0FBAR999FHDfmB75MiRbN26tUvfeIpEkpioGKYOnsrUwVP59+n/DkBtfS0bijfw3ifvsWL3Ct7f+36Trp5RFsX4rPEcl3scx+Uex7TB05iWO42cpJxQvhWRPqc6MjR1pJK81sz6FnzwArz2I/jsvaGORkTCnJlx+eWXc8cdd5Cens748eMBOHLkCHV1dezbt4/Fixdz++23M2HChG7f75JLLuGOO+5g3rx5nHfeedx+++3U1tYCUF1dTVVVFZWVlezcuZMnn3yS559/nokTJza5RmFhIS+//DITJkxg48aNTJ8+vcPRwr71rW9x6623UlRURF5eHt/4xje48MILKSgoYOvWrd1+XyKRJNoXzeScyUzOmcxV064CvK6eWw5uYeWelazas4r3977Pwm0LeXLNkw2vy03OZergqUwbPK0hcRyfNZ7YqM499yMSaVRHhqaO1JPDrck7Hk75D1j+qPd8nohIB6644gqeeOKJhm4oAL/4xS9YuXIlY8aM4f777+db3/oW69evp6KiexMzT548mT/84Q/87Gc/Y/r06cTFxZGXlwd4zxPcf//93HXXXUybNo01a9ZwxRVXsGLFiibXuPfee3n77bfJz8/n6quv5ujRox3e97rrruOHP/whc+fO5dRTT2XcuHH8/ve/79Z7EelPfOZj9KDRXDrxUu446w5e/OKL7PjuDoq/V8w/rvoH9557L+eNOY/95fv55dJfcuVfrmTa/00j6adJTHloClf8+QruXnQ3L334EtsObVN3Z+k3VEf2PYu0XyBFRUVu+fLl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\n",
      "text/plain": [
       "<Figure size 1080x720 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(5*3,5*2))\n",
    "\n",
    "for i in range(1,7):\n",
    "    if (i%2)==0:\n",
    "        \n",
    "        train_mae = MAE_Train_dic[i/2]\n",
    "        validation_mae = MAE_Validation_dic[i/2]\n",
    "        x = np.arange(1,len(train_mae)+1)\n",
    "        plt.subplot(3,2,i)  #从1开始\n",
    "        plt.plot(x,train_mae,label=\"train\",c='g')\n",
    "        plt.plot(x,validation_mae,label=\"validation\",c='r')\n",
    "        plt.legend(fontsize=15)\n",
    "        plt.xlabel(\"training steps\",fontsize=12)\n",
    "        plt.ylabel(\"MAE\",fontsize=12)\n",
    "    else:\n",
    "        \n",
    "        train_rmse = RMSE_Train_dic[(i+1)/2]\n",
    "        validation_rmse = RMSE_Validation_dic[(i+1)/2]\n",
    "        x = np.arange(1,len(train_rmse)+1)\n",
    "        plt.subplot(3,2,i)  #从1开始\n",
    "        plt.plot(x,train_rmse,label=\"train\")\n",
    "        plt.plot(x,validation_rmse,label=\"validation\")\n",
    "        plt.legend(fontsize=15)\n",
    "        plt.xlabel(\"training steps\",fontsize=12)\n",
    "        plt.ylabel(\"RMSE\",fontsize=12)        \n",
    "plt.savefig('E:/推荐系统/图片/svd汇总.png')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
